/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package src.j2ee.compumake.actions;

import com.opensymphony.xwork2.ActionSupport;
import java.util.ArrayList;
import src.j2ee.compumake.dao.DAOUsuario;
import src.j2ee.compumake.dao.DAOZonas;
import src.j2ee.compumake.dominio.Usuario;
import src.j2ee.compumake.dominio.Zona;

/**
 *
 * @author Eric
 */
public class RegistroUsuarioAction extends ActionSupport {

    public String Normal() throws Exception {
        
        Zona zona = null;
        
        Usuario nuevoUsuario = this.getUsuario();
        
        DAOZonas daoZonas = new DAOZonas();
        ArrayList<Zona> listaDeZonas = daoZonas.listarZonas();
        
        for(int i=0; i<listaDeZonas.size(); i++){
            if(usuario.getInformacion().getZona().getNombre().equals(listaDeZonas.get(i).getNombre())){
                zona = listaDeZonas.get(i);
            }
        }
        
        nuevoUsuario.getInformacion().setZona(zona);
        nuevoUsuario.setPrivilegio(privelegioUsuarioNormal);
        
        DAOUsuario daoUsuario = new DAOUsuario();
        String resultadoDeRegistro = daoUsuario.registrarUsuario(nuevoUsuario);
        
        if(resultadoDeRegistro.equals("true")){
            return SUCCESS;
        }
        else{
            addActionError(resultadoDeRegistro);
            return "normal";
        }
        
    }
    
    public String Encargado() throws Exception {
        
        Zona zona = null;
        
        Usuario nuevoUsuario = this.getUsuario();
        
        DAOZonas daoZonas = new DAOZonas();
        ArrayList<Zona> listaDeZonas = daoZonas.listarZonas();
        
        for(int i=0; i<listaDeZonas.size(); i++){
            if(usuario.getInformacion().getZona().getNombre().equals(listaDeZonas.get(i).getNombre())){
                zona = listaDeZonas.get(i);
            }
        }
        
        nuevoUsuario.getInformacion().setZona(zona);
        nuevoUsuario.setPrivilegio(privelegioUsuarioEncargado);
        
        DAOUsuario daoUsuario = new DAOUsuario();
        String resultadoDeRegistro = daoUsuario.registrarUsuario(nuevoUsuario);
        
        if(resultadoDeRegistro.equals("true")){
            return SUCCESS;
        }
        else{
            addActionError(resultadoDeRegistro);
            return "encargado";
        }
        
    }
    
    public String Administrador() throws Exception {
        
        Zona zona = null;
        
        Usuario nuevoUsuario = this.getUsuario();
        
        DAOZonas daoZonas = new DAOZonas();
        ArrayList<Zona> listaDeZonas = daoZonas.listarZonas();
        
        for(int i=0; i<listaDeZonas.size(); i++){
            if(usuario.getInformacion().getZona().getNombre().equals(listaDeZonas.get(i).getNombre())){
                zona = listaDeZonas.get(i);
            }
        }
        
        nuevoUsuario.getInformacion().setZona(zona);
        nuevoUsuario.setPrivilegio(privelegioUsuarioAdministrador);
        
        DAOUsuario daoUsuario = new DAOUsuario();
        String resultadoDeRegistro = daoUsuario.registrarUsuario(nuevoUsuario);
        
        if(resultadoDeRegistro.equals("true")){
            return SUCCESS;
        }
        else{
            addActionError(resultadoDeRegistro);
            return "administrador";
        }
        
    }
    
    @Override
    public void validate() {
        if(this.usuario.getInformacion().getNombre().isEmpty()){
            addFieldError("zona.nombre", "El campo para el nombre de la sucursal no puede estar vacío.");
        }
        if(this.usuario.getInformacion().getApellidos().isEmpty()){
            addFieldError("zona.nombre", "El campo para el nombre de la sucursal no puede estar vacío.");
        }
        if(this.usuario.getInformacion().getCalle().isEmpty()){
            addFieldError("zona.nombre", "El campo para el nombre de la sucursal no puede estar vacío.");
        }
        if(this.usuario.getInformacion().getCruzamientos().isEmpty()){
            addFieldError("zona.nombre", "El campo para el nombre de la sucursal no puede estar vacío.");
        }
        if(this.usuario.getInformacion().getNumero().isEmpty()){
            addFieldError("zona.nombre", "El campo para el nombre de la sucursal no puede estar vacío.");
        }
    }
    
    private final int privelegioUsuarioNormal = 1;
    private final int privelegioUsuarioEncargado = 2;
    private final int privelegioUsuarioAdministrador = 3;
    
    private Usuario usuario;

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
    
}
